import "@site/src/languages/highlight";

# Vec2

**描述：**

&emsp;&emsp;表示具有 x 轴和 y 轴坐标的二维向量类。

**类对象：**[Vec2 Class](/docs/api/Class%20Object/Vec2)。

**继承自：**[ContainerItem](/docs/api/Class/ContainerItem)。

## x

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;向量的 x 坐标。

**签名：**
```tl
const x: number
```

## y

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;向量的 y 坐标。

**签名：**
```tl
const y: number
```

## length

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;向量的长度。

**签名：**
```tl
const length: number
```

## lengthSquared

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;向量的长度平方值。

**签名：**
```tl
const lengthSquared: number
```

## angle

**类型：** 只读成员变量。

**描述：**

&emsp;&emsp;向量和 x 轴之间的角度。

**签名：**
```tl
const angle: number
```

## distance

**类型：** 函数。

**描述：**

&emsp;&emsp;计算两个向量之间的距离。

**签名：**
```tl
distance: function(self: Vec2, vec: Vec2): number
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| vec | Vec2 | 另一个要计算距离的向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| number | 两个向量之间的距离。 |

## distanceSquared

**类型：** 函数。

**描述：**

&emsp;&emsp;计算两个向量之间的平方距离。

**签名：**
```tl
distanceSquared: function(self: Vec2, vec: Vec2): number
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| vec | Vec2 | 另一个要计算平方距离的向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| number | 两个向量之间的距离平方值。 |

## normalize

**类型：** 函数。

**描述：**

&emsp;&emsp;将向量做归一化。

**签名：**
```tl
normalize: function(self: Vec2): Vec2
```

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 归一化的向量。 |

## perp

**类型：** 函数。

**描述：**

&emsp;&emsp;获取此向量的垂直向量。

**签名：**
```tl
perp: function(self: Vec2): Vec2
```

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 垂直向量。 |

## clamp

**类型：** 函数。

**描述：**

&emsp;&emsp;将向量限定在两个其他向量之间的范围内。

**签名：**
```tl
clamp: function(self: Vec2, from: Vec2, to: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| from | Vec2 | 表示范围下限的向量对象。 |
| to | Vec2 | 表示范围上限的向量对象。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 限定在范围内的向量。 |

## add

**类型：** 函数。

**描述：**

&emsp;&emsp;将两个向量相加的元方法。

**签名：**
```tl
add: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要相加的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 两个向量之和。 |

## sub

**类型：** 函数。

**描述：**

&emsp;&emsp;从一个向量中减去另一个向量的元方法。

**签名：**
```tl
sub: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要减去的向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 两个向量之间的差。 |

## mul

**类型：** 函数。

**描述：**

&emsp;&emsp;逐分量相乘两个向量的元方法。

**签名：**
```tl
mul: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要相乘的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 逐分量相乘两个向量的结果。 |

## mul

**类型：** 函数。

**描述：**

&emsp;&emsp;将向量乘以标量的元方法。

**签名：**
```tl
mul: function(self: Vec2, other: number): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | number | 要乘以的标量，用数字表示。 |

## mul

**类型：** 函数。

**描述：**

&emsp;&emsp;将向量乘以尺寸对象的元方法。

**签名：**
```tl
mul: function(self: Vec2, other: Dora.Size.Type): Vec2
```

**用法示例：**
```tl
local halfVec = vec * Size(0.5, 0.5)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Size | 要乘以的尺寸对象。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 将向量乘以尺寸对象的结果。 |

## div

**类型：** 函数。

**描述：**

&emsp;&emsp;将向量除以标量的元方法。

**签名：**
```tl
div: function(self: Vec2, other: number): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | number | 要除以的标量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 将向量除以标量的结果。 |

## equals

**类型：** 函数。

**描述：**

&emsp;&emsp;比较两个向量是否相等的元方法。

**签名：**
```tl
equals: function(self: Vec2, other: Vec2): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要进行比较的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 两个向量是否相等。 |

## __add

**类型：** 元方法。

**描述：**

&emsp;&emsp;将两个向量相加的元方法。

**签名：**
```tl
metamethod __add: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要相加的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 两个向量之和。 |

## __sub

**类型：** 元方法。

**描述：**

&emsp;&emsp;从一个向量中减去另一个向量的元方法。

**签名：**
```tl
metamethod __sub: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要减去的向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 两个向量之间的差。 |

## __mul

**类型：** 元方法。

**描述：**

&emsp;&emsp;逐分量相乘两个向量的元方法。

**签名：**
```tl
metamethod __mul: function(self: Vec2, other: Vec2): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要相乘的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 逐分量相乘两个向量的结果。 |

## __mul

**类型：** 元方法。

**描述：**

&emsp;&emsp;将向量乘以标量的元方法。

**签名：**
```tl
metamethod __mul: function(self: Vec2, other: number): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | number | 要乘以的标量，用数字表示。 |

## __mul

**类型：** 元方法。

**描述：**

&emsp;&emsp;将向量乘以尺寸对象的元方法。

**签名：**
```tl
metamethod __mul: function(self: Vec2, other: Dora.Size.Type): Vec2
```

**用法示例：**
```tl
local halfVec = vec * Size(0.5, 0.5)
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Size | 要乘以的尺寸对象。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 将向量乘以尺寸对象的结果。 |

## __div

**类型：** 元方法。

**描述：**

&emsp;&emsp;将向量除以标量的元方法。

**签名：**
```tl
metamethod __div: function(self: Vec2, other: number): Vec2
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | number | 要除以的标量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| Vec2 | 将向量除以标量的结果。 |

## __eq

**类型：** 元方法。

**描述：**

&emsp;&emsp;比较两个向量是否相等的元方法。

**签名：**
```tl
metamethod __eq: function(self: Vec2, other: Vec2): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| other | Vec2 | 要进行比较的另一个向量。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 两个向量是否相等。 |